home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio / Ray Dream Studio (CDRAYD1) (Ray Dream) (1995).iso / DREAMSDK.WIN / INCLUDE / EVXAPI.H < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-30  |  8.4 KB  |  200 lines  |  [TEXT/mdos]

  1. /* $Id: evxapi.h 1.56 1995/10/29 06:36:41 JOHN Exp $ */
  2. #ifndef __EVXAPI__
  3. #define __EVXAPI__
  4.  
  5. #ifndef __XRTYPES__
  6. #include "XRTypes.h"
  7. #endif
  8.  
  9. #ifndef __cplusplus
  10. #ifndef class
  11. #define class typedef void*
  12. #endif
  13. #endif
  14.  
  15. class TShadingDefinition;
  16. class TLight;
  17. class TTree;
  18. class TEVOffscreen;
  19. class EVXTreeIterator;
  20. class T2DLineArt;
  21. class TCamera;
  22. class TBackground;
  23. class TBackdrop;
  24. class TAtmosphere;
  25. class WhileOffscreenFocus;
  26. class SDGraphicDevice;
  27.  
  28. struct RayHitParameters;
  29. struct RayHit3D;
  30. struct Ray3D;
  31. struct ShadingInOut;
  32. struct ShadingFlags;
  33. struct TLightTraceElement;
  34. struct UVSpaceInfo;
  35. struct FACET3D;
  36. struct PATCH3D;
  37. struct VERTEX3D;
  38.  
  39. //ER 3.1
  40. struct TZBInfo;
  41.  
  42. #if defined(qPointersD0) && defined(__MWERKS__) && defined(qPowerPC)
  43. #pragma pointers_in_D0
  44. #endif
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49. //----Memory allocation---
  50. void* RDXAPI EVXmalloc (unsigned long size);
  51. void* RDXAPI EVXcalloc(unsigned long nmemb, unsigned long size);
  52. void* RDXAPI EVXrealloc (void* p, unsigned long size);
  53. void     RDXAPI EVXfree (void* p);
  54.  
  55. //------Multitasking
  56. void RDXAPI EVXYield(short ticks);
  57. long RDXAPI EVXTickCount();
  58.  
  59. //---- TTree---
  60. long RDXAPI EVXSceneGetNLights(TTree* This);
  61. TLight* RDXAPI EVXGetIndLight(TTree* This,long i);
  62.   
  63. typedef void  (RDXAPITYPE *EVXTreeForEachInstanceCallBack)(TINSTANCE *anInstance,void *priv); 
  64. void RDXAPI EVXTreeForEachInstance(TTree* This,EVXTreeForEachInstanceCallBack proc,void *priv);
  65. void RDXAPI EVXTreeForEachExtraInstance(TTree* This,EVXTreeForEachInstanceCallBack proc, TCamera *camera, void *priv);
  66.  
  67. //---- TINSTANCE---
  68. void RDXAPI EVXInstanceGetGlobalTransform(TINSTANCE* This,TRANSCALE* ats);
  69. void RDXAPI EVXInstanceDoShade(TINSTANCE* This,ShadingInOut* theShIO);
  70. void RDXAPI EVXInstanceGetMainColors(TINSTANCE* This,COLOR* Color1,COLOR* Color2);
  71. void RDXAPI EVXInstanceGetShadingFlags(TINSTANCE* This,ShadingFlags *flags);
  72. long RDXAPI EVXInstanceGetShadingLevel(TTree* This);
  73. long RDXAPI EVXInstanceGetInstanceKind(TINSTANCE* This); // Primitive=1, SceneInstance=2, Camera=3, Light=4
  74. long RDXAPI EVXInstanceGetIndex(TINSTANCE* This);
  75.  
  76. //----TLight----
  77. void RDXAPI EVXLightGetGlobalTransform(TLight* This,TRANSFORM *atf);
  78. BOOLEAN RDXAPI EVXLightGetColor(TLight* This,const VECTOR3 *QQ,const VECTOR3 *DD,const FIXED *dist,COLOR *acolor,BOOLEAN *callForShadowEffect);
  79. BOOLEAN RDXAPI EVXLightGetDirection(TLight* This, const VECTOR3 *QQ, VECTOR3 *DD, FIXED *dist);
  80. void RDXAPI EVXLightShadowEffect(TLight* This,const FIXED *distThru,const FIXED *distTotal,COLOR *acolor);
  81. TLightTraceElement* RDXAPI EVXLightGetNewTrace(TLight* This, short *nb);
  82. long RDXAPI EVXLightGetPrimitiveID(TLight* This);
  83. void RDXAPI EVXLightForEachShadowBuffer(TLight* This, void (*proc)(BOOLEAN lightType, TRANSFORM *atf, FIXED halfAngle, void* priv), void* priv);
  84.  
  85. //----TCamera----
  86. BOOLEAN RDXAPI EVXUVToRay(TCamera *This,const VECTOR2 *uv,VECTOR3 *OO,VECTOR3 *DD);
  87. BOOLEAN RDXAPI EVXXYZToUV(TCamera *This,const VECTOR3 *PP,VECTOR2 *uv,FIXED *zz);
  88. void RDXAPI EVXGetGlobalToCameraTransform(TCamera *This,TRANSFORM *aTF);
  89. long RDXAPI EVXGetPrimitiveID(TCamera *This);
  90. long RDXAPI EVXCameraClip3D(TCamera* This, FACET3D* RDDLocalFace, VERTEX3D* RDDLocalVertice, 
  91.                               FACET3D* RDDCameraFace, VERTEX3D* RDDCameraVertice, 
  92.                               FIXED *ClipBox);
  93.  
  94. //----TBackground----
  95. void RDXAPI EVXBdGetUVColor(TBackdrop *This,const VECTOR2 *uv,const BOX2D *uvMinMax,COLOR *acolor);
  96. void RDXAPI EVXBgGetDirectionColor(TBackground *This,const VECTOR3 *DD,COLOR *acolor);
  97.  
  98.  
  99. //----TAtmosphere----
  100. void RDXAPI EVXAtmosphericLocal(TAtmosphere *This,const VECTOR3 *AA,const VECTOR3 *BB,COLOR *filter);
  101. void RDXAPI EVXAtmosphericGlobal(TAtmosphere *This,const VECTOR3 *PP,const VECTOR3 *DD,COLOR *filter);
  102.  
  103.  
  104. //---- TEVOffScreen---
  105. TEVOffscreen* RDXAPI EVXOffNew();
  106. void RDXAPI EVXOffDelete(TEVOffscreen* theOffscreen);
  107. void RDXAPI EVXOffInitialize(TEVOffscreen* This,short h,short v,short depth);
  108. short RDXAPI EVXOffGetDepth(TEVOffscreen* This);
  109. WhileOffscreenFocus* RDXAPI EVXFocus(TEVOffscreen* This);
  110. void RDXAPI EVXUnFocus(WhileOffscreenFocus* theFocusSaver);
  111. void RDXAPI EVXOffCopyBits(SDGraphicDevice *aGD,TEVOffscreen* This,RECT* source,RECT* dest);
  112. void RDXAPI EVXOffErase(TEVOffscreen* This);
  113. void RDXAPI EVXOffSetPosition(TEVOffscreen* This,short h,short v);
  114. void RDXAPI EVXOffGoRight(TEVOffscreen* This);
  115. void RDXAPI EVXOffGoLeft(TEVOffscreen* This);
  116. void RDXAPI EVXOffGoDown(TEVOffscreen* This);
  117. void RDXAPI EVXOffGoUp(TEVOffscreen* This);
  118. void RDXAPI EVXOffPut1(TEVOffscreen* This,unsigned char value);
  119. void RDXAPI EVXOffPut8(TEVOffscreen* This,unsigned char value);
  120. void RDXAPI EVXOffPut32(TEVOffscreen* This,long value);
  121. unsigned char RDXAPI EVXOffGet1(TEVOffscreen* This);
  122. unsigned char RDXAPI EVXOffGet8(TEVOffscreen* This);
  123. unsigned long RDXAPI EVXOffGet32(TEVOffscreen* This);
  124. void RDXAPI EVXOffPut(TEVOffscreen* This, void* buffer);
  125. void RDXAPI EVXOffGet(TEVOffscreen* This, void* buffer);
  126.  
  127.  
  128. //-----TBuffer copydata-----
  129. class TBuffer;
  130. class TChunk;
  131.  
  132. void RDXAPI EVXBufferGetChunkInfo(TBuffer* This,long *sizeH,long *sizeV,long *rowBytes,long *depth);
  133. typedef  void  (RDXAPITYPE *EVXBufferForEachChunkCallBack)(TChunk *achunk,const RECT *aclip,short Ph,short Pv,void *priv);
  134. void RDXAPI EVXBufferForEachChunk(TBuffer* buffer,const RECT *area,EVXBufferForEachChunkCallBack proc,void *priv);
  135.  
  136. BOOLEAN RDXAPI EVXChunkLockForRead(TChunk *achunk);
  137. BOOLEAN RDXAPI EVXChunkLockForWrite(TChunk *achunk);
  138. void RDXAPI EVXChunkUnlock(TChunk *achunk,BOOLEAN unlock);
  139. void* RDXAPI EVXChunkGetData(TChunk *achunk);
  140.  
  141.  
  142. //------T2DLineArt-----------
  143. void RDXAPI EVXBeginGroup(T2DLineArt *This);
  144. void RDXAPI EVXBeginPath(T2DLineArt *This,const VECTOR2 *P0);
  145. void RDXAPI EVXLineTo(T2DLineArt *This,const VECTOR2 *P1);
  146. void RDXAPI EVXCurveTo(T2DLineArt *This,const VECTOR2 *P1,const VECTOR2 *P2);
  147. void RDXAPI EVXBezierTo(T2DLineArt *This,const VECTOR2 *P1,const VECTOR2 *P2,const VECTOR2 *P3);
  148. void RDXAPI EVXEndPath(T2DLineArt *This);
  149. void RDXAPI EVXEndGroup(T2DLineArt *This);
  150. void RDXAPI EVXDrawVertex(T2DLineArt *This,const VECTOR2 *P0);
  151. void RDXAPI EVXDrawHandle(T2DLineArt *This,const VECTOR2 *P0);
  152. void RDXAPI EVXDrawControl(T2DLineArt *This,const VECTOR2 *P0);
  153.  
  154. //--Random---
  155.  
  156. long RDXAPI EVXRandom();
  157. void RDXAPI EVXRandomSeed(long newSeed);
  158.  
  159. //ER 3.1
  160. //---PrimitiveRenderer---  
  161. class TScene;
  162. class TPrimitiveBase;
  163.  
  164. typedef  void  (RDXAPITYPE *EVXPrimRenderForEachSubPrimRendCallBack)(TINSTANCE *anInstance,void *priv);
  165. typedef  void  (RDXAPITYPE *EVXPrimBaseForEachPatchCallBack)(PATCH3D *aF,void *priv);
  166. typedef void  (RDXAPITYPE *EVXPrimRenderForEachFacetteCallBack)(FACET3D *aF,void *priv);
  167.  
  168. void RDXAPI EVXPrimSceneForEachSubPrimRend(TScene *This,EVXPrimRenderForEachSubPrimRendCallBack proc,void *priv);
  169. void RDXAPI EVXPrimBaseForEachDXFTriangle(TPrimitiveBase *This,EVXPrimRenderForEachFacetteCallBack proc,void *priv);
  170.  
  171. void RDXAPI EVXPrimBaseForEachPatch(TPrimitiveBase *This,EVXPrimBaseForEachPatchCallBack proc,void *priv);
  172. BOOLEAN RDXAPI EVXPrimBaseIsPatchBased(TPrimitiveBase *This);
  173. void RDXAPI EVXPrimBaseForEachFacette(TPrimitiveBase *This,EVXPrimRenderForEachFacetteCallBack proc,void *priv);
  174.  
  175. void RDXAPI EVXPrimBaseGetUVSpace(TPrimitiveBase *This, long uvSpaceID,UVSpaceInfo* result);
  176. void RDXAPI EVXPrimBaseGetFlatness(TPrimitiveBase *This, FIXED *flatness);
  177.  
  178. void RDXAPI EVXPrimRenderGetUVSpace(TINSTANCE *This, long uvSpaceID,UVSpaceInfo* result);
  179. void RDXAPI EVXPrimRenderGetFlatness(TINSTANCE *This, FIXED *flatness);
  180.  
  181. void RDXAPI EVXPrimRenderDraw(TINSTANCE *This, const TZBInfo *aZBInfo, short uvSpaceID);
  182. void RDXAPI EVXPrimRenderDrawLA(TINSTANCE *This, T2DLineArt *aLineArt,const TRANSCALE *aTS,TCamera *acamera,const RECT *area,short modeD);
  183. void RDXAPI EVXPrimRenderGetBoxes(TINSTANCE *This, const TZBInfo *aZBInfo,FIXED *minZ,FIXED *maxZ,BOX2D *clip,BOX3D *box);
  184. void RDXAPI EVXPrimRenderGetBB(TINSTANCE *This, BOX3D *bbox);
  185. void RDXAPI EVXPrimRenderDehydrate(TINSTANCE *This, short level);
  186. BOOLEAN RDXAPI EVXPrimRenderRayHit(TINSTANCE *This, const Ray3D *aR,const RayHitParameters *params,RayHit3D *hit);
  187. void RDXAPI EVXPrimRenderGetAllInfo(TINSTANCE *This, RayHit3D *hit,short *uvSpaceID);
  188.  
  189. #ifdef __cplusplus
  190. }
  191. #endif
  192. #if defined(qPointersD0) && defined(__MWERKS__) && defined(qPowerPC)
  193. #pragma pointers_in_A0
  194. #endif
  195.  
  196. void InitializeEVX(void);
  197. void TerminateEVX(void);
  198.  
  199. #endif
  200.